home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Codigo / Recortar, arrastrar y colocar / MultiCopy / MultiCopy.cs next >
Encoding:
Text File  |  2002-05-30  |  3.1 KB  |  97 lines

  1. //----------------------------------------
  2. // MultiCopy.cs ⌐ 2001 by Charles Petzold
  3. //----------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Windows.Forms;
  8.  
  9. class MultiCopy: Form
  10. {
  11.      const string strFormat = "MultiCopy.InternalFormat";
  12.  
  13.      float[,] afValues = {{ 0.12f, 3.45f, 6.78f, 9.01f },
  14.                           { 2.34f, 5.67f, 8.90f, 1.23f },
  15.                           { 4.56f, 7.89f, 0.12f, 3.45f }};
  16.      [STAThread]
  17.      public static void Main()
  18.      {
  19.           Application.Run(new MultiCopy());
  20.      }
  21.      public MultiCopy()
  22.      {
  23.           Text = "Copia m·ltiple";
  24.           Menu = new MainMenu();
  25.  
  26.                // Men· Edici≤n
  27.  
  28.           MenuItem mi = new MenuItem("&Edici≤n");
  29.           Menu.MenuItems.Add(mi);
  30.  
  31.                // Elemento de men· Edici≤n Copiar
  32.  
  33.           mi = new MenuItem("&Copiar");
  34.           mi.Click += new EventHandler(MenuEditCopyOnClick);
  35.           mi.Shortcut = Shortcut.CtrlC;
  36.           Menu.MenuItems[0].MenuItems.Add(mi);
  37.      }
  38.      void MenuEditCopyOnClick(object obj, EventArgs ea)
  39.      {
  40.           DataObject data = new DataObject();
  41.  
  42.                // Definici≤n del formato interno del portapapeles.
  43.  
  44.           MemoryStream memorystream = new MemoryStream();
  45.           BinaryWriter binarywriter = new BinaryWriter(memorystream);
  46.  
  47.           binarywriter.Write(afValues.GetLength(0));
  48.           binarywriter.Write(afValues.GetLength(1));
  49.  
  50.           for (int iRow = 0; iRow < afValues.GetLength(0); iRow++)
  51.           for (int iCol = 0; iCol < afValues.GetLength(1); iCol++)
  52.                binarywriter.Write(afValues[iRow, iCol]);
  53.           
  54.           binarywriter.Close();
  55.  
  56.           data.SetData(strFormat, memorystream);
  57.  
  58.                // Definir el formato CSV del portapapeles.
  59.  
  60.           memorystream = new MemoryStream();
  61.           StreamWriter streamwriter = new StreamWriter(memorystream);
  62.  
  63.           for (int iRow = 0; iRow < afValues.GetLength(0); iRow++)
  64.           for (int iCol = 0; iCol < afValues.GetLength(1); iCol++)
  65.           {
  66.                streamwriter.Write(afValues[iRow, iCol]);
  67.  
  68.                if (iCol < afValues.GetLength(1) - 1)
  69.                     streamwriter.Write(",");
  70.                else
  71.                     streamwriter.WriteLine();
  72.           }
  73.           streamwriter.Write("\0");
  74.           streamwriter.Close();
  75.           data.SetData(DataFormats.CommaSeparatedValue, memorystream);
  76.  
  77.                // Definir el formato String del portapapeles.
  78.  
  79.           StringWriter stringwriter = new StringWriter();
  80.  
  81.           for (int iRow = 0; iRow < afValues.GetLength(0); iRow++)
  82.           for (int iCol = 0; iCol < afValues.GetLength(1); iCol++)
  83.           {
  84.                stringwriter.Write(afValues[iRow, iCol]);
  85.  
  86.                if (iCol < afValues.GetLength(1) - 1)
  87.                     stringwriter.Write("\t");
  88.                else
  89.                     stringwriter.WriteLine();
  90.           }
  91.           stringwriter.Close();
  92.           data.SetData(stringwriter.ToString());
  93.  
  94.           Clipboard.SetDataObject(data, false);
  95.      }
  96. }
  97.